#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=105,M=2*N;
int n,q;
int e[M],ne[M],h[N],idx,w[M];
int f[N][N];
int apple[N];
void add(int a, int b, int c)
{
    e[idx]=b;
    w[idx]=c;
    ne[idx]=h[a];
    h[a]=idx++;
}
int dfs(int u, int num, int fa)
{
    if(num==0) return 0;
    if(f[u][num]) return f[u][num];
    
    int v[2];
    int idx=0;
    for(int i=h[u];~i;i=ne[i])
    {
        int j=e[i];
        if(j==fa) continue;
        v[idx]=j;
        apple[v[idx]]=w[i];
        idx++;
    }
    
    if(idx==0) 
    {
        return f[u][num]=apple[u];
    }
    
    int res=0;
    for(int i=0;i<=num-1;i++)
    {
        res=max(res,dfs(v[0],i,u)+dfs(v[1],num-i-1,u));
    }
    
    return f[u][num]=res+apple[u];

}
int main()
{
    memset(h,-1,sizeof(h));
    
    cin>>n>>q;
    q++;
    for(int i=1;i<n;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        add(a,b,c);
        add(b,a,c);
    }
    
    cout<<dfs(1,q,-1)<<endl;
    
    return 0;
}
